package cn.b.sky.form.service;

import cn.b.sky.common.model.BatchJobReport;
import cn.b.sky.common.model.Page;
import cn.b.sky.form.model.BusinessType;
import cn.b.sky.form.model.condition.BusinessTypeCondition;

import java.util.List;

/**
 * 
 * <strong>Title : BusinessTypeService<br></strong>
 * <strong>Package : cn.b.sky.flowable.service<br></strong>
 * <strong>Description : </strong>业务类型操作业务类接口<br> 
 * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
 * <p>
 * @author JunLin.Yang<br>
 * @version <strong>v1.0.0</strong>
 */
public interface BusinessTypeService{

    /**
     * 
     * <strong>Title : getBusinessTypeAndFields<br></strong>
     * <strong>Description : </strong>根据工厂编号、业务类型获取对应业务信息及相关业务字段集合<br> 
     * <strong>Create on : 2016年9月28日 上午10:43:21<br></strong>
     * <p>
     * @param siteCode 工厂编码
     * @param businessType 业务类型
     * @return
     * BusinessType 业务类型信息对象
     * @throws 
     * @author JunLin.Yang<br>
     * @version <strong>v1.0.0</strong><br>
     * <br>
     * <strong>修改历史:</strong><br>
     * 修改人 | 修改日期 | 修改描述<br>
     * -------------------------------------------<br>
     * <br>
     * <br>
     */
    public BusinessType getBusinessTypeAndFields(String siteCode, String businessType);
  	
  	/**
  	 * 
  	 * <strong>Title : insertBusinessType<br></strong>
  	 * <strong>Description : </strong>新增业务类型数据<br> 
  	 * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
  	 * <p>
  	 * @param data 业务类型
  	 * @return
  	 * int 新增记录数
  	 * @throws 
  	 * @author JunLin.Yang<br>
  	 * @version <strong>v1.0.0</strong><br>
  	 * <br>
  	 * <strong>修改历史:</strong><br>
  	 * 修改人 | 修改日期 | 修改描述<br>
  	 * -------------------------------------------<br>
  	 * <br>
  	 * <br>
 		 */
  	public int insertBusinessType(BusinessType data);
  	
  	/**
     * 
     * <strong>Title : insertBusinessTypeAndInitFields<br></strong>
     * <strong>Description : </strong>新增业务类型数据并初始化相关字段<br> 
     * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
     * <p>
     * @param data 业务类型
     * @return
     * int 新增记录数
     * @throws 
     * @author JunLin.Yang<br>
     * @version <strong>v1.0.0</strong><br>
     * <br>
     * <strong>修改历史:</strong><br>
     * 修改人 | 修改日期 | 修改描述<br>
     * -------------------------------------------<br>
     * <br>
     * <br>
     */
    public int insertBusinessTypeAndInitFields(BusinessType data);
  
  	/**
  	 * 
  	 * <strong>Title : updateBusinessType<br></strong>
  	 * <strong>Description : </strong>更新业务类型数据<br> 
  	 * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
  	 * <p>
  	 * @param data 业务类型
  	 * @return
  	 * int 更新的记录数
  	 * @throws 
  	 * @author JunLin.Yang<br>
  	 * @version <strong>v1.0.0</strong><br>
  	 * <br>
  	 * <strong>修改历史:</strong><br>
  	 * 修改人 | 修改日期 | 修改描述<br>
  	 * -------------------------------------------<br>
  	 * <br>
  	 * <br>
  	 */
  	public int updateBusinessType(BusinessType data);
  	
  	
  	/**
  	 * 
  	 * <strong>Title : deleteBusinessType<br></strong>
  	 * <strong>Description : </strong>删除业务类型数据<br> 
  	 * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
  	 * <p>
  	 * @param data 业务类型
  	 * @return
  	 * BatchJobReport 执行结果信息对象
  	 * @throws 
  	 * @author JunLin.Yang<br>
  	 * @version <strong>v1.0.0</strong><br>
  	 * <br>
  	 * <strong>修改历史:</strong><br>
  	 * 修改人 | 修改日期 | 修改描述<br>
  	 * -------------------------------------------<br>
  	 * <br>
  	 * <br>
  	 */
  	public BatchJobReport deleteBusinessType(BusinessType data);
  	
  	
  	/**
  	 * 
  	 * <strong>Title : getBusinessTypesCount<br></strong>
  	 * <strong>Description : </strong>查询所有的业务类型数据记录数<br> 
  	 * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
  	 * <p>
  	 * @return
  	 * long 数据记录数
  	 * @throws 
  	 * @author JunLin.Yang<br>
  	 * @version <strong>v1.0.0</strong><br>
  	 * <br>
  	 * <strong>修改历史:</strong><br>
  	 * 修改人 | 修改日期 | 修改描述<br>
  	 * -------------------------------------------<br>
  	 * <br>
  	 * <br>
  	 */
  	public long getBusinessTypesCount();
  	
  	/**
  	 * 
  	 * <strong>Title : selectBusinessTypes<br></strong>
  	 * <strong>Description : </strong>查询所有的业务类型数据<br> 
  	 * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
  	 * <p>
  	 * @return
  	 * List<BusinessType> 所有的业务类型数据
  	 * @throws 
  	 * @author JunLin.Yang<br>
  	 * @version <strong>v1.0.0</strong><br>
  	 * <br>
  	 * <strong>修改历史:</strong><br>
  	 * 修改人 | 修改日期 | 修改描述<br>
  	 * -------------------------------------------<br>
  	 * <br>
  	 * <br>
  	 */
  	public List<BusinessType> selectBusinessTypes();
  	
  	/**
  	 * 
  	 * <strong>Title : deleteBusinessTypeByPrimaryKey<br></strong>
  	 * <strong>Description : </strong>根据主键信息删除业务类型数据<br> 
  	 * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
  	 * <p>
	 * @param siteCode 工厂编号
	 * @param businessType 业务类型
	 * @return
  	 * BatchJobReport 执行结果信息对象
  	 * @throws 
  	 * @author JunLin.Yang<br>
  	 * @version <strong>v1.0.0</strong><br>
  	 * <br>
  	 * <strong>修改历史:</strong><br>
  	 * 修改人 | 修改日期 | 修改描述<br>
  	 * -------------------------------------------<br>
  	 * <br>
  	 * <br>
  	 */
  	public BatchJobReport deleteBusinessTypeByPrimaryKey(String siteCode, String businessType);
  	
  /**
	 * 
	 * <strong>Title : getBusinessTypeByPrimaryKey<br></strong>
	 * <strong>Description : </strong>根据主键查询业务类型对象<br> 
	 * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
	 * <p>
	 * @param siteCode 工厂编号
	 * @param businessType 业务类型
	 * @return
	 * BusinessType 业务类型对象
	 * @throws 
	 * @author JunLin.Yang<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public BusinessType getBusinessTypeByPrimaryKey(String siteCode, String businessType);
  
  /**
	 * 
	 * <strong>Title : existBusinessTypeByPrimaryKey<br></strong>
	 * <strong>Description : </strong>根据主键查询业务类型对象是否存在<br> 
	 * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
	 * <p>
	 * @param siteCode 工厂编号
	 * @param businessType 业务类型
	 * @return
	 * boolean 数据是否存在
	 * @throws 
	 * @author JunLin.Yang<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public boolean existBusinessTypeByPrimaryKey(String siteCode, String businessType);
  
  	/**
  	 * 
  	 * <strong>Title : existsBusinessTypeByCondition<br></strong>
  	 * <strong>Description : </strong>根据查询对象查询业务类型数据是否存在<br> 
  	 * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
  	 * <p>
  	 * @param condition 业务类型查询对象
  	 * boolean 数据是否存在
  	 * @throws 
  	 * @author JunLin.Yang<br>
  	 * @version <strong>v1.0.0</strong><br>
  	 * <br>
  	 * <strong>修改历史:</strong><br>
  	 * 修改人 | 修改日期 | 修改描述<br>
  	 * -------------------------------------------<br>
  	 * <br>
  	 * <br>
  	 */
  	public boolean existsBusinessTypeByCondition(BusinessTypeCondition condition);
	
  /**
	 * 
	 * <strong>Title : getBusinessTypeByCondition<br></strong>
	 * <strong>Description : </strong>根据查询条件查询对应业务类型对象<br> 
	 * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
	 * <p>
	 * @param condition 业务类型查询条件
	 * @return
	 * BusinessType 业务类型对象
	 * @throws 
	 * @author JunLin.Yang<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public BusinessType getBusinessTypeByCondition(BusinessTypeCondition condition);
	
	/**
	 * 
	 * <strong>Title : selectBusinessTypesByCondition<br></strong>
	 * <strong>Description : </strong>根据查询条件查询业务类型集合<br> 
	 * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
	 * <p>
	 * @param condition 业务类型查询条件
	 * @return 
	 * List<BusinessType> 业务类型集合
	 * @throws 
	 * @author JunLin.Yang<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public List<BusinessType> selectBusinessTypesByCondition(BusinessTypeCondition condition);
	
	/**
	 * 
	 * <strong>Title : selectBusinessTypePageDataByCondition<br></strong>
	 * <strong>Description : </strong>根据查询条件查询相应分页的业务类型集合<br> 
	 * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
	 * <p>
	 * @param condition 业务类型查询条件
	 * @return 
	 * List<BusinessType> 业务类型集合
	 * @throws 
	 * @author JunLin.Yang<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public List<BusinessType> selectBusinessTypePageDataByCondition(BusinessTypeCondition condition);
	
	/**
	 * 
	 * <strong>Title : selectBusinessTypePageByCondition<br></strong>
	 * <strong>Description : </strong>根据查询条件查询相应业务类型分页信息<br> 
	 * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
	 * <p>
	 * @param condition 业务类型查询条件
	 * @return 
	 * List<BusinessType> 业务类型分页信息
	 * @throws 
	 * @author JunLin.Yang<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public Page selectBusinessTypePageByCondition(BusinessTypeCondition condition);

	/**
	 * 
	 * <strong>Title : getBusinessTypesCountByCondition<br></strong>
	 * <strong>Description : </strong>根据查询条件查询相应的业务类型记录数<br> 
	 * <strong>Create on : 2016-09-27 下午05:56:14<br></strong>
	 * <p>
	 * @param condition 业务类型查询条件
	 * @return
	 * long 数据记录数
	 * @throws 
	 * @author JunLin.Yang<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
  	public long getBusinessTypesCountByCondition(BusinessTypeCondition condition);
  	
  
  	/**
  	 * 
  	 * <strong>Title : doCreateOrUpdateBusinessTable<br></strong>
  	 * <strong>Description : </strong>根据指定的业务类型生成或更新表<br> 
  	 * <strong>Create on : 2016年9月30日 上午9:30:59<br></strong>
  	 * <p>
  	 * @param businessType 业务类型
  	 * @param siteCode 工厂编码
  	 * @return
  	 * boolean 表是否生成
  	 * @throws 
  	 * @author JunLin.Yang<br>
  	 * @version <strong>v1.0.0</strong><br>
  	 * <br>
  	 * <strong>修改历史:</strong><br>
  	 * 修改人 | 修改日期 | 修改描述<br>
  	 * -------------------------------------------<br>
  	 * <br>
  	 * <br>
  	 */
  	public boolean doCreateOrUpdateBusinessTable(String siteCode, String businessType);
  	
  	
}
